package com.lineengine.lineengine.context;


/**
 * <p>
 * 上下文
 * </p>
 *
 * @author wenrong.yu
 * @since 2020-11-07 21:20
 */
public interface IContext<T extends IContext<T>> {
    /**
     * 记录耗时
     *
     * @param nodeName 节点名称
     * @param costTime 耗时
     */
    void recordCostTime(String nodeName, Long costTime);

    /**
     * 打印耗时信息
     *
     * @return 耗时信息
     */
    String printCostTime();

    /**
     * 是否需要回滚
     *
     * @return true 回滚，false 不回滚
     */
    boolean isRollback();

    /**
     * 标记回滚
     */
    void markRollback();
}
